#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN=1050;
int dp[MAXN];
int main(void){
	//子序列是可以不连续的
	int a[]={-5,4,2,7,3,-5,9,4,8,-2,6};
	int n=11;
	int m=0;;
	//视情况初始化，比如负数的考虑
	for(int i=0;i<n;i++){
		dp[i]=a[i];
	}
	for(int i=1;i<n;i++){
		for(int j=0;j<i;j++){
			//保证递增以及保证dp需要更新
			if(a[i]>a[j] && dp[i]<dp[j]+a[i]){
				dp[i]=dp[j]+a[i];
			}
		}
		if(dp[i]>m){
			m=dp[i];
		}
	}
	for(int i=0;i<n;i++){
		printf("%d ",a[i]);
	}
	printf("\n");
	for(int i=0;i<n;i++){
		printf("%d ",dp[i]);
	}
	printf("\n");
	printf("%d\n",m);
	return 0;
}
